﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace AvaProvi
{
    [Serializable]
    public class clsViaDeAcceso_CRN:clsEstado,IControlEstados
    {
        #region Propiedades de clase
        public clsEntorno_CRN Entorno { get; set; }
        public string Importancia { get; set; }
        public string Nombre { get; set; }
        public string Intensidad { get; set; }
        public int ID { get; set; }
        #endregion

        #region Constructor
        public clsViaDeAcceso_CRN(clsEntorno_CRN objEntorno):base()
        {
            this.Entorno = objEntorno;
            this.Importancia = string.Empty;
            this.Intensidad = string.Empty;
            this.Nombre = string.Empty;
        }
        #endregion

        #region Métodos

        public bool Guardar()
        {
            if (this.DatosValidos())
            {
                if (this.EsNuevo)
                    return CreaViaDeAcceso();
                else
                {
                    if (this.EsModificado)
                        return ActualizaViaDeAccceso();
                    else
                        return EliminaViaDeAcceso();
                }
            }
            return false;
        }

        private bool EliminaViaDeAcceso()
        {
            clsViaDeAcceso_CD objViaDeAcceso_CD = new clsViaDeAcceso_CD();
            return objViaDeAcceso_CD.EliminaViaDeAcceso(this);
        }

        private bool ActualizaViaDeAccceso()
        {
            clsViaDeAcceso_CD objViaDeAcceso_CD = new clsViaDeAcceso_CD();
            return objViaDeAcceso_CD.ModificaViaDeAcceso(this);
        }

        private bool CreaViaDeAcceso()
        {
            clsViaDeAcceso_CD objViaDeAcceso_CD = new clsViaDeAcceso_CD();
            return objViaDeAcceso_CD.CreaViaDeAcceso(this);
        }

        public bool DatosValidos()
        {
            return true;
        }

        public static BindingList<clsViaDeAcceso_CRN> RecuperaViasDeAcceso(clsEntorno_CRN objEntorno)
        {
            clsViaDeAcceso_CD objViaDeAcceso_CD = new clsViaDeAcceso_CD();
            BindingList<clsViaDeAcceso_CRN> blViasDeAcceso = new BindingList<clsViaDeAcceso_CRN>();
            BindingList<dsEntorno.ViasDeAccesoRow> blViasRecuperadas = objViaDeAcceso_CD.RecuperaViasDeAccesoDeInmueble(objEntorno.Inmueble.Avaluo.IdAvaluo);
            foreach (dsEntorno.ViasDeAccesoRow filaViaDeAccceso in blViasRecuperadas)
            {
                clsViaDeAcceso_CRN objViaDeAcceso = new clsViaDeAcceso_CRN(objEntorno);
                objViaDeAcceso.EsModificado = true;
                objViaDeAcceso.ID = filaViaDeAccceso.IDViaDeAcceso;
                objViaDeAcceso.Importancia = filaViaDeAccceso.Importancia;
                objViaDeAcceso.Intensidad = filaViaDeAccceso.Intensidad;
                objViaDeAcceso.Nombre = filaViaDeAccceso.Nombre;
                blViasDeAcceso.Add(objViaDeAcceso);
            }
            return blViasDeAcceso;
        }

        #endregion
    }
}
